/*******************************************************************************
 * Classe Statistiques : création et gestion du panneau de statistiques
 ******************************************************************************/
package tp2;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;

/**
 *
 * @author W&G
 */
public class Statistiques extends JPanel {

    private Fenetre fenetre;//Fenetre du programme
    private JLabel lblTitre = new JLabel(" Statistiques");//titre
    //Etiquette du Nombre de parties jouées
    private JLabel lblPartiesJouees = new JLabel("Parties jouées :  " + 0);
    //Etiqette du Nombre de parties gagnées par le joueur 1
    private JLabel lblParties1 = new JLabel("Parties gagnées par le joueur 1 :  " + 0);
    //Etiquette du Nombre de parties gagnées par le joueur 2
    private JLabel lblParties2 = new JLabel("Parties gagnées par le joueur 2 :  " + 0);
    //Bouton retour
    private JButton btnRetour = new JButton("Retour");
    private int partiesJouees = 0;//Nombre de parties jouées
    private int parties1 = 0;//Nombre de parties gagnées par le joueur 1
    private int parties2 = 0;//Nombre de parties gagnées par le joueur 2
    private JPanel pnlConteneur = new JPanel();//panneau conteneur
    //Panneau principal
    private JPanel pnlPrincipal = new JPanel(new GridLayout(5, 1));
    private boolean retour = false;//variable de retour

    public Statistiques(Fenetre fenetre) {
        this.fenetre = fenetre;

        lblTitre.setHorizontalAlignment(SwingConstants.CENTER);

        lblTitre.setForeground(Color.CYAN);
        lblPartiesJouees.setForeground(Color.CYAN);
        lblParties1.setForeground(Color.CYAN);
        lblParties2.setForeground(Color.CYAN);

        pnlPrincipal.setBackground(fenetre.getFond());
        pnlConteneur.setBackground(fenetre.getFond());

        pnlPrincipal.add(lblTitre);
        pnlPrincipal.add(lblPartiesJouees);
        pnlPrincipal.add(lblParties1);
        pnlPrincipal.add(lblParties2);
        pnlPrincipal.add(btnRetour);

        btnRetour.addActionListener(new BoutonPresse());

        charger();

        pnlConteneur.add(pnlPrincipal);
        this.add(pnlConteneur);
    }

    public void setRetour(boolean retour) {//Definit le panneau de retour
        this.retour = retour;
    }

    public void ajouterVictoire(Jeu.Joueur j) {//ajoute une victoire au joueur
        partiesJouees++;
        if (j == Jeu.Joueur.JOUEUR1) {
            parties1++;
        } else {
            parties2++;
        }
        lblPartiesJouees.setText("Parties jouées :  " + partiesJouees);
        lblParties1.setText("Parties gagnées par le joueur 1 :  " + parties1);
        lblParties2.setText("Parties gagnées par le joueur 2 :  " + parties2);
        sauvegarder();
    }

    public void sauvegarder() {//Sauvegarde les statistiques dans un fichier
        try {
            PrintWriter fw = new PrintWriter(new FileWriter("Statistiques.txt"));
            fw.println(partiesJouees);
            fw.println(parties1);
            fw.println(parties2);
            fw.close();
        } catch (Exception e) {
            System.out.println("Erreur ecriture données");
        }
    }

    public void charger() {//Charge les données a partir du fichier
        try {
            BufferedReader fr = new BufferedReader(new FileReader("Statistiques.txt"));

            partiesJouees = Integer.parseInt(fr.readLine());
            parties1 = Integer.parseInt(fr.readLine());
            parties2 = Integer.parseInt(fr.readLine());
            fr.close();

            lblPartiesJouees.setText("Parties jouées :  " + partiesJouees);
            lblParties1.setText("Parties gagnées par le joueur 1 :  " + parties1);
            lblParties2.setText("Parties gagnées par le joueur 2 :  " + parties2);

        } catch (Exception e) {
            System.out.println("Erreur lors du chargement");
        }
    }
//Classe de  gestion des evenements
    class BoutonPresse implements ActionListener {

        public void actionPerformed(ActionEvent ae) {
            if (ae.getSource() == btnRetour) {
                if (retour) {
                    fenetre.afficherJeu();
                } else {
                    fenetre.afficherMenuPrincipal();
                }
            }
        }
    }
}
